package com.cskaoyan.javase.array._4operation._1get;

/**
 * 获取数组中的最值
 * 获取数组中的最值，包括获取最大值和最小值，也是常见操作。
 *
 * 具体思路：
 * 任取一个元素（一般选择第一个元素）作为参照物。
 * 遍历其他元素，依次比较，选择出更大/小的值，类似于打擂台。
 * 最终获取最值。
 *
 * @since 16:24
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 9923, 12, 3, 12, 312, 3, 12, 3, 12, 321, 3, 4332, 4, 3, 4, 3, -432, 4};
        System.out.println(getMaxElementIntArr(arr));
        System.out.println(getMinElementIntArr(arr));
    }

    // 需求一: 求一个int类型数组元素的最大值

    /**
     * 求最大值
     * @param target 被求最大值的目标int数组
     * @return int 最大值
     * @author wuguidong@cskaoyan.onaliyun.com
     * @since 2022/06/09 16:26
     */
    public static int getMaxElementIntArr(int[] target) {
        // 1.先假设第一个元素是最大值
        int max = target[0];
        // 2.遍历整个数组,然后逐一比对,求出最大值
        /*for (int element : target) {
            if (element > max) {
                max = element;
            }
        }*/
        for (int i = 1; i < target.length; i++) {
            // 从第二个元素开始比较
            if (target[i] > max) {
                max = target[i];
            }
        }
        // 3.返回最大值
        return max;
    }


    public static int getMinElementIntArr(int[] target) {
        // 1.先假设第一个元素是最小值
        int min = target[0];
        // 2.遍历整个数组,然后逐一比对,求出最小值
        for (int i = 1; i < target.length; i++) {
            // 从第二个元素开始比较
            if (target[i] < min) {
                min = target[i];
            }
        }
        // 3.返回最大值
        return min;
    }
}
